package lol.clann.bukkit.pluginboot;

import lol.clann.clannboot.PluginBootstrap;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.function.Consumer;
import java.util.logging.Level;

/**
 * 其他插件开发,继承此插件即可
 */
public abstract class BukkitPluginBootstrap extends JavaPlugin {

    /**
     * 加载过程时抛出异常,会调用此回调,关闭服务器
     */
    private final Consumer<Throwable> excpetionCallback;

    private String displayName;

    public BukkitPluginBootstrap(String displayName) {
        this.displayName = displayName;
        excpetionCallback = exception -> {
            getLogger().log(Level.SEVERE, exception.getMessage(), exception);
            Bukkit.shutdown();
        };
    }

    public String getDisplayName() {
        if (displayName == null) {
            displayName = this.getName();
        }
        return displayName;
    }

    @Override
    public void onEnable() {
        // 启动入口
        PluginBootstrap.load(this, getName(), getDisplayName(), excpetionCallback);
    }

    @Override
    public void onDisable() {
        PluginBootstrap.unload(getName());
    }
}
